This invention relates generally to system interconnect technology. Multi-lane communications provide one method of providing high speed communications between integrated circuit (“IC”) devices. Some applications require significant distance between transmit and receive systems. For example, a cell phone tower requires communications between tower and base systems. In such applications, the problem of skew from one lane to another can become particularly significant. Also, as communications happen at higher data rates, ever smaller amounts of skew can exceed a clock cycle and therefore cause data errors. Typically data is aligned across multiple lanes using test data that includes what is sometimes referred to as a training pattern or training sequence. A typical training pattern will include several logical high (“1”) values followed and/or preceded by several logical low (“0”) values. For example, the SPI-5 specification provides for a training pattern of 16 low values followed by 16 high values (or as stated in the specification, eight words of “00” followed by eight words of “11”). This produces a long square wave and alignment is typically done by aligning an edge of the square wave across all lanes. This may be accomplished with deskew FIFOs, delay chains, or other known circuitry that can be configured to apply different amounts of set delay on each lane. So, for example, if lanes 0 and 2 arrive together but two clock cycles ahead of lanes 1 and 3, FIFOs in lanes 0 and 2 can be configured to introduce two clocks of delay on those lanes relative to lanes 1 and 3 to align the data. Once the training data has been used to align data across multiple lanes, then regular data can be sent and it will be aligned properly aligned by the receiving device.
However, there are certain disadvantages to using training patterns to align data. For example, if the amount of skew exceeds the length of a training pattern cycle, then it is possible that aligning data with an edge of a square wave will actually misalign the data by some multiple (e.g., 1, 2, 3, etc.) of the training pattern's cycle length. Given the amount of skew that can be introduced in high speed communications, particularly if done over a significant distance, even a 32 bit training pattern (as referenced above in the context of SPI-5) can be too short for the amount of skew that might be introduced in a particular application. Therefore, new methods and structures for handling skew are needed.